package v1

import (
	"github.com/cuiyuanxin/airuisi-admin/internal/service/reqs"
	"github.com/gin-gonic/gin"
)

type PublicController struct {
}

func NewPublic(g *gin.RouterGroup) *gin.RouterGroup {
	public := PublicController{}

	g.POST("/login", public.Login)

	return g
}

// @Summary 登录
// @Produce json
// @Param username path string false "用户名"
// @Param password path string false "密码"
// @Param mobile path string false "手机号码"
// @Param captcha path string false "验证码"
// @Param type path int true "登录类型 1:账号登录 2:手机号登录"
// @Success 200 {object} model.LoginSwagger "成功"
// @Failure 400 {object} errcode.Error "请求错误"
// @Failure 500 {object} errcode.Error "内部错误"
// @outer /api/v1/login [post]
func (p PublicController) Login(c *gin.Context) {
	accountReq := reqs.LoginAccountRequest{}
	mobileReq := reqs.LoginAccountRequest{}
	// 判断是账号登录还是手机号登录
	//if param.Username == "" {
	//	param = reqs.LoginMobileRequest{}
	//}

	//response := app.NewResponse(c)
	//valid, errs := app.BindAndValid(c, &param)
	//if !valid {
	//	global.Logger.Error(fmt.Sprintf("app.BindAndValid errs: %v", errs))
	//	response.ToErrorResponse(errcode.InvalidParams.WithDetails(errs.Errors()...))
	//	return
	//}
	//
	//svc := service.New(c.Request.Context())
	//
	//// 验证验证码
	//pluc, err := svc.Login(&param)
	//if err != nil {
	//	global.Logger.Error(fmt.Sprintf("svc.Login err: %v", err))
	//	response.ToErrorResponse(errcode.ServerError)
	//	return
	//}
	//// 先验证手机号,手机号不存在
	//if pluc.PUsers.Id <= 0 {
	//	response.ToErrorResponse(errcode.ErrorUsersCheckMobileIsNo)
	//	return
	//}
	//// 手机号已禁用
	//if pluc.PUsers.IsDeleted == 1 {
	//	response.ToErrorResponse(errcode.ErrorUsersCheckMobileIsDeleted)
	//	return
	//}
	//// 验证码不存在
	//if pluc.PLogincode.Id <= 0 {
	//	response.ToErrorResponse(errcode.ErrorUsersCodeFault)
	//	return
	//}
	//// 验证相等
	//codeInt, _ := convert.StrTo(param.Captcha).Int()
	//if pluc.PLogincode.Code == codeInt {
	//	// 验证码过期
	//	nowtime, _ := convert.Int64To(util.NowToTimestamp(false)).Int()
	//	if pluc.PLogincode.Expiretime < nowtime {
	//		response.ToErrorResponse(errcode.ErrorUsersCodeOverdue)
	//		return
	//	}
	//	roleCode := ""
	//
	//	if pluc.PUsers.URole == 0 { // 系统管理员
	//		roleCode = "root"
	//	} else { // 查询角色
	//		roleInfo, _ := svc.GetRoleInfo(int64(pluc.PUsers.URole))
	//
	//		if roleInfo.Id > 0 {
	//			roleCode = roleInfo.Code
	//		}
	//	}
	//
	//	// 验证码正确且没过期，生成JWT Token
	//	appKey := global.JwtSetting.AppKey
	//	appSecret := global.JwtSetting.Secret
	//	token, err := app.GenerateToken(appKey, appSecret, pluc.PUsers.Id, roleCode)
	//	if err != nil {
	//		global.Logger.Error(fmt.Sprintf("app.GenerateToken err: %v", err))
	//		response.ToErrorResponse(errcode.UnauthorizedTokenGenerate)
	//		return
	//	}
	//
	//	err = svc.CreateLoginInfo(pluc.PUsers.Id)
	//	if err != nil {
	//		global.Logger.Error(fmt.Sprintf("svc.CreateLoginInfo err: %v", err))
	//		response.ToErrorResponse(errcode.ServerError)
	//		return
	//	}
	//
	//	response.ToResponse(gin.H{
	//		"token": token,
	//	}, errcode.Success)
	//
	//	return
	//}
	//
	//// 验证码错误
	//response.ToErrorResponse(errcode.ErrorUsersCodeFault)
	return
}

// @Summary 获取短信验证码
// @Produce  json
// @Param mobile query string true "手机号码" length(11)
// @Success 200 {object} models.TagSwagger "成功"
// @Failure 400 {object} errcode.Error "请求错误"
// @Failure 500 {object} errcode.Error "内部错误"
// @Router /api/sms [post]

//func (l *Login) SendSms(c *gin.Context) {
//	param := service.PUsersSmsRequest{}
//	response := app.NewResponse(c)
//	valid, errs := app.BindAndValid(c, &param)
//	if !valid {
//		global.Logger.Error(fmt.Sprintf("app.BindAndValid err: %v", errs))
//		response.ToErrorResponse(errcode.InvalidParams.WithDetails(errs.Errors()...))
//		return
//	}
//
//	svc := service.New(c.Request.Context())
//	pusers, err := svc.CheckMobile(&param)
//	if err != nil {
//		global.Logger.Error(fmt.Sprintf("svc.CheckAuth err: %v", err))
//		response.ToErrorResponse(errcode.ServerError)
//		return
//	}
//	if pusers.Id <= 0 {
//		response.ToErrorResponse(errcode.ErrorUsersCheckMobileIsNo)
//		return
//	}
//	if pusers.IsDeleted == 1 {
//		response.ToErrorResponse(errcode.ErrorUsersCheckMobileIsDeleted)
//		return
//	}
//
//	// 查询验证是否有效期
//	has, err := svc.CheckCaptcha(pusers.Id)
//	if err != nil {
//		global.Logger.Error(fmt.Sprintf("svc.CheckCaptcha err: %v", err))
//		response.ToErrorResponse(errcode.ServerError)
//		return
//	}
//	// 生成发送验证码
//	if !has {
//		code := util.GenValidateCode(6)
//		err = svc.CreateLoginCode(pusers.Id, code)
//		if err != nil {
//			global.Logger.Error(fmt.Sprintf("svc.CreateLoginCode err: %v", err))
//			response.ToErrorResponse(errcode.ServerError)
//			return
//		}
//
//		data := gin.H{}
//		fmt.Println(global.ServerSetting.GinMode)
//		if global.ServerSetting.GinMode != "debug" {
//			sdd, err := SmsService(code, param.Mobile)
//			if err != nil {
//				global.Logger.Error(fmt.Sprintf("SmsService err: %v", err))
//				response.ToErrorResponse(errcode.ServerError)
//				return
//			}
//
//			if sdd.Status > 0 {
//				global.Logger.Error(fmt.Sprintf("SmsService err: %s", sdd.Message))
//				response.ToErrorResponse(errcode.ErrorUsersSendCodeFail)
//				return
//			}
//		} else {
//			data["code"] = code
//		}
//
//		response.ToResponse(data, errcode.Success)
//		return
//	}
//
//	response.ToResponse(nil, errcode.ErrorUsersCodeStatus)
//	return
//}
